package com.xh.easyretry.annotations;

import java.lang.annotation.*;

@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
public @interface XHRetry {

    /**
     * 最大重试次数
     */
    int retryCount() default 3;

    /**
     * 重试策略
     */
    String retryStrategy() default "";

    /**
     * 时间规避策略
     */
    TimeAvoidance timeAvoidance() default @TimeAvoidance();

    /**
     * 监听到第一次重试执行的逻辑
     */
    String firstRetryListener() default "";

    /**
     * 监听到最后一次重试执行的逻辑
     */
    String lastRetryListener() default "";

    /**
     * 监听到重试执行失败执行的逻辑
     */
    String retryFailedListener() default "";

    /**
     * 最后一次重试失败执行的逻辑
     */
    String lastFailedListener() default "";
}
